/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * dlgModificarProveedor.java
 *
 * Created on 27/10/2011, 05:21:43 AM
 */

package visual.Ingreso;

import bentity.beProveedor;
import bentity.beUsuario;
import blogic.blHelper;
import blogic.blLog;
import blogic.blProveedor;
import javax.swing.JOptionPane;
import visual.Seguridad.visualHelper;

/**
 *
 * @author chokewanka
 */
public class dlgModificarProveedor extends javax.swing.JDialog {
    beProveedor proveedor=new beProveedor();
    private beUsuario usuario=null;

    /** Creates new form dlgModificarProveedor */
    public dlgModificarProveedor(java.awt.Frame parent, boolean modal,int idProveedor,beUsuario usuario) {
        super(parent, modal);
        initComponents();
        this.usuario=usuario;

        try{
        this.proveedor=(new blProveedor()).obtenerProveedorPorCodigo(idProveedor);
        }catch(Exception e){
            e.printStackTrace();

        }
        this.restaurarElementos();

        this.setAlwaysOnTop(true);
        visualHelper.centrarDialogoEnPantalla(this);
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        lblTitulo = new javax.swing.JLabel();
        pnlDatos = new javax.swing.JPanel();
        lblRUC = new javax.swing.JLabel();
        lblTelefono = new javax.swing.JLabel();
        lblDireccion = new javax.swing.JLabel();
        lblNombre = new javax.swing.JLabel();
        lblContacto = new javax.swing.JLabel();
        txtNombre = new javax.swing.JTextField();
        txtDireccion = new javax.swing.JTextField();
        txtContacto = new javax.swing.JTextField();
        txtTelefono = new javax.swing.JTextField();
        txtRuc = new javax.swing.JTextField();
        lblEmail = new javax.swing.JLabel();
        txtEmail = new javax.swing.JTextField();
        lblCodigo = new javax.swing.JLabel();
        txtCodigo = new javax.swing.JTextField();
        lblBusqFila = new javax.swing.JLabel();
        lblBusqFila1 = new javax.swing.JLabel();
        lblBusqFila2 = new javax.swing.JLabel();
        lblBusqFila3 = new javax.swing.JLabel();
        btnModificar = new javax.swing.JButton();
        btnCancelar = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setMinimumSize(new java.awt.Dimension(395, 505));
        setModal(true);
        setResizable(false);
        getContentPane().setLayout(null);

        lblTitulo.setFont(new java.awt.Font("DejaVu Sans", 0, 36));
        lblTitulo.setForeground(new java.awt.Color(0, 0, 0));
        lblTitulo.setText("Modificar Proveedor");
        getContentPane().add(lblTitulo);
        lblTitulo.setBounds(20, 10, 400, 43);

        pnlDatos.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)), "Datos", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Dialog", 0, 14))); // NOI18N
        pnlDatos.setLayout(null);

        lblRUC.setFont(new java.awt.Font("Dialog", 0, 12));
        lblRUC.setForeground(new java.awt.Color(0, 0, 0));
        lblRUC.setText("RUC");
        pnlDatos.add(lblRUC);
        lblRUC.setBounds(30, 130, 90, 15);

        lblTelefono.setFont(new java.awt.Font("Dialog", 0, 12));
        lblTelefono.setForeground(new java.awt.Color(0, 0, 0));
        lblTelefono.setText("Teléfono");
        pnlDatos.add(lblTelefono);
        lblTelefono.setBounds(30, 220, 80, 20);

        lblDireccion.setFont(new java.awt.Font("Dialog", 0, 12));
        lblDireccion.setForeground(new java.awt.Color(0, 0, 0));
        lblDireccion.setText("Dirección");
        pnlDatos.add(lblDireccion);
        lblDireccion.setBounds(30, 170, 58, 15);

        lblNombre.setFont(new java.awt.Font("Dialog", 0, 12));
        lblNombre.setForeground(new java.awt.Color(0, 0, 0));
        lblNombre.setText("Nombre");
        pnlDatos.add(lblNombre);
        lblNombre.setBounds(30, 80, 49, 15);

        lblContacto.setFont(new java.awt.Font("Dialog", 0, 12));
        lblContacto.setForeground(new java.awt.Color(0, 0, 0));
        lblContacto.setText("Nombre Contacto");
        pnlDatos.add(lblContacto);
        lblContacto.setBounds(30, 270, 140, 30);

        txtNombre.setFont(new java.awt.Font("Dialog", 0, 12));
        txtNombre.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                txtNombreActionPerformed(evt);
            }
        });
        txtNombre.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                txtNombreKeyTyped(evt);
            }
        });
        pnlDatos.add(txtNombre);
        txtNombre.setBounds(160, 70, 170, 25);

        txtDireccion.setFont(new java.awt.Font("Dialog", 0, 12));
        txtDireccion.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                txtDireccionActionPerformed(evt);
            }
        });
        txtDireccion.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                txtDireccionKeyTyped(evt);
            }
        });
        pnlDatos.add(txtDireccion);
        txtDireccion.setBounds(160, 170, 170, 25);

        txtContacto.setFont(new java.awt.Font("Dialog", 0, 12));
        txtContacto.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                txtContactoKeyTyped(evt);
            }
        });
        pnlDatos.add(txtContacto);
        txtContacto.setBounds(160, 270, 170, 25);

        txtTelefono.setFont(new java.awt.Font("Dialog", 0, 12));
        txtTelefono.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                txtTelefonoActionPerformed(evt);
            }
        });
        txtTelefono.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                txtTelefonoKeyTyped(evt);
            }
        });
        pnlDatos.add(txtTelefono);
        txtTelefono.setBounds(160, 220, 170, 25);

        txtRuc.setFont(new java.awt.Font("Dialog", 0, 12));
        txtRuc.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                txtRucActionPerformed(evt);
            }
        });
        txtRuc.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                txtRucKeyTyped(evt);
            }
        });
        pnlDatos.add(txtRuc);
        txtRuc.setBounds(160, 120, 170, 25);

        lblEmail.setFont(new java.awt.Font("Dialog", 0, 12));
        lblEmail.setForeground(new java.awt.Color(0, 0, 0));
        lblEmail.setText("Email");
        pnlDatos.add(lblEmail);
        lblEmail.setBounds(30, 320, 130, 30);

        txtEmail.setFont(new java.awt.Font("Dialog", 0, 12));
        txtEmail.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                txtEmailKeyTyped(evt);
            }
        });
        pnlDatos.add(txtEmail);
        txtEmail.setBounds(160, 320, 170, 25);

        lblCodigo.setFont(new java.awt.Font("Dialog", 0, 12));
        lblCodigo.setForeground(new java.awt.Color(0, 0, 0));
        lblCodigo.setText("Codigo");
        pnlDatos.add(lblCodigo);
        lblCodigo.setBounds(30, 40, 70, 15);

        txtCodigo.setFont(new java.awt.Font("Dialog", 0, 12));
        txtCodigo.setEnabled(false);
        pnlDatos.add(txtCodigo);
        txtCodigo.setBounds(160, 30, 170, 25);

        lblBusqFila.setFont(new java.awt.Font("Dialog", 0, 12)); // NOI18N
        lblBusqFila.setForeground(java.awt.Color.red);
        lblBusqFila.setText("(*)");
        pnlDatos.add(lblBusqFila);
        lblBusqFila.setBounds(80, 80, 30, 15);

        lblBusqFila1.setFont(new java.awt.Font("Dialog", 0, 12)); // NOI18N
        lblBusqFila1.setForeground(java.awt.Color.red);
        lblBusqFila1.setText("(*)");
        pnlDatos.add(lblBusqFila1);
        lblBusqFila1.setBounds(60, 130, 30, 15);

        lblBusqFila2.setFont(new java.awt.Font("Dialog", 0, 12)); // NOI18N
        lblBusqFila2.setForeground(java.awt.Color.red);
        lblBusqFila2.setText("(*)");
        pnlDatos.add(lblBusqFila2);
        lblBusqFila2.setBounds(90, 220, 30, 15);

        lblBusqFila3.setFont(new java.awt.Font("Dialog", 0, 12)); // NOI18N
        lblBusqFila3.setForeground(java.awt.Color.red);
        lblBusqFila3.setText("(*)");
        pnlDatos.add(lblBusqFila3);
        lblBusqFila3.setBounds(140, 270, 30, 20);

        getContentPane().add(pnlDatos);
        pnlDatos.setBounds(10, 50, 370, 360);

        btnModificar.setBackground(new java.awt.Color(240, 235, 226));
        btnModificar.setFont(new java.awt.Font("Dialog", 0, 12));
        btnModificar.setForeground(new java.awt.Color(0, 0, 0));
        btnModificar.setText("Modificar");
        btnModificar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnModificarActionPerformed(evt);
            }
        });
        getContentPane().add(btnModificar);
        btnModificar.setBounds(70, 420, 100, 27);

        btnCancelar.setBackground(new java.awt.Color(240, 235, 226));
        btnCancelar.setFont(new java.awt.Font("Dialog", 0, 12));
        btnCancelar.setForeground(new java.awt.Color(0, 0, 0));
        btnCancelar.setText("Cancelar");
        btnCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCancelarActionPerformed(evt);
            }
        });
        getContentPane().add(btnCancelar);
        btnCancelar.setBounds(210, 420, 100, 27);

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void txtNombreActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txtNombreActionPerformed
        // TODO add your handling code here:
}//GEN-LAST:event_txtNombreActionPerformed

    private void txtDireccionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txtDireccionActionPerformed
        // TODO add your handling code here:
}//GEN-LAST:event_txtDireccionActionPerformed

    private void txtTelefonoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txtTelefonoActionPerformed
        // TODO add your handling code here:
}//GEN-LAST:event_txtTelefonoActionPerformed

    private void txtRucActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txtRucActionPerformed
        // TODO add your handling code here:
}//GEN-LAST:event_txtRucActionPerformed

    private void btnModificarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnModificarActionPerformed
        try {
     
            beProveedor pv = leerDatosProveedor();

            if(pv==null) return;

            modificarProveedor(pv);
            visualHelper.mostrarMensajeSatisfaccion("Se ha modificado el proveedor satisfactoriamente.");
            this.dispose();
        } catch (Exception e) {
            e.printStackTrace();
            visualHelper.mostrarMensajeError("Ha ocurrido un error. Inténtelo nuevamente");
        }
}//GEN-LAST:event_btnModificarActionPerformed

    private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelarActionPerformed
        int rslt = visualHelper.mostrarPreguntaSiNo("Los cambios no se guardarán. ¿Desea salir de todos modos?");
        if (rslt == JOptionPane.YES_OPTION){
            this.setVisible(false);
            this.dispose();
        }
}//GEN-LAST:event_btnCancelarActionPerformed

    private void txtEmailKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtEmailKeyTyped
        String strEmail = this.txtEmail.getText();
        if (strEmail.length() >= 30)
            visualHelper.ningunCaracterEnTextField(evt);
        else
            visualHelper.soloEmail(evt);
    }//GEN-LAST:event_txtEmailKeyTyped

    private void txtContactoKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtContactoKeyTyped
        String strContacto = this.txtContacto.getText();
        if (strContacto.length() >= 50)
            visualHelper.ningunCaracterEnTextField(evt);
        else
            visualHelper.soloNombres(evt);
    }//GEN-LAST:event_txtContactoKeyTyped

    private void txtTelefonoKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtTelefonoKeyTyped
        String strTelf = this.txtTelefono.getText();
        if (strTelf.length() >= 20)
            visualHelper.ningunCaracterEnTextField(evt);
        else
        visualHelper.validarTelefono(evt);
    }//GEN-LAST:event_txtTelefonoKeyTyped

    private void txtDireccionKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtDireccionKeyTyped
        String strDireccion = this.txtDireccion.getText();
        if (strDireccion.length() >= 50)
            visualHelper.ningunCaracterEnTextField(evt);
        else
            visualHelper.soloNombres(evt);
    }//GEN-LAST:event_txtDireccionKeyTyped

    private void txtRucKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtRucKeyTyped
        String strRuc = this.txtRuc.getText();
        if (strRuc.length() >= 11)
            visualHelper.ningunCaracterEnTextField(evt);
        else
            visualHelper.soloDigitosEnTextField(evt);
    }//GEN-LAST:event_txtRucKeyTyped

    private void txtNombreKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtNombreKeyTyped
        String strRazon = this.txtNombre.getText();
        if (strRazon.length() >= 50)
            visualHelper.ningunCaracterEnTextField(evt);
        else
            visualHelper.soloNombres(evt);
    }//GEN-LAST:event_txtNombreKeyTyped

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            beUsuario u=null;
            private int idProveedor;
            public void run() {
                dlgModificarProveedor dialog = new dlgModificarProveedor(new javax.swing.JFrame(), true,idProveedor,u);
                dialog.addWindowListener(new java.awt.event.WindowAdapter() {
                    public void windowClosing(java.awt.event.WindowEvent e) {
                        System.exit(0);
                    }
                });
                dialog.setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnCancelar;
    private javax.swing.JButton btnModificar;
    private javax.swing.JLabel lblBusqFila;
    private javax.swing.JLabel lblBusqFila1;
    private javax.swing.JLabel lblBusqFila2;
    private javax.swing.JLabel lblBusqFila3;
    private javax.swing.JLabel lblCodigo;
    private javax.swing.JLabel lblContacto;
    private javax.swing.JLabel lblDireccion;
    private javax.swing.JLabel lblEmail;
    private javax.swing.JLabel lblNombre;
    private javax.swing.JLabel lblRUC;
    private javax.swing.JLabel lblTelefono;
    private javax.swing.JLabel lblTitulo;
    private javax.swing.JPanel pnlDatos;
    private javax.swing.JTextField txtCodigo;
    private javax.swing.JTextField txtContacto;
    private javax.swing.JTextField txtDireccion;
    private javax.swing.JTextField txtEmail;
    private javax.swing.JTextField txtNombre;
    private javax.swing.JTextField txtRuc;
    private javax.swing.JTextField txtTelefono;
    // End of variables declaration//GEN-END:variables

    private void restaurarCampos() {
        this.txtNombre.setText(this.proveedor.getRazon_Social());
        this.txtDireccion.setText(this.proveedor.getDireccion());
        this.txtRuc.setText(this.proveedor.getRuc());
        this.txtTelefono.setText(this.proveedor.getTelefono());
        this.txtContacto.setText(this.proveedor.getNombre_Contacto());
        this.txtEmail.setText(this.proveedor.getEmail());

    }

    private beProveedor leerDatosProveedor() throws Exception{
        blHelper blh=new blHelper();

        //NO NULOS

        if(this.txtNombre.getText().equals("")) {
            visualHelper.mostrarMensajeAdvertencia("Es necesario llenar el campo Razon Social");
            return null;
        }
        if(this.txtRuc.getText().equals("")) {
            visualHelper.mostrarMensajeAdvertencia("Es necesario llenar el campo Ruc");
            return null;
        }
        if(this.txtContacto.getText().equals("")) {
            visualHelper.mostrarMensajeAdvertencia("Es necesario llenar el campo Contacto");
            return null;
        }

        //CARACTERES INVALIDOS

        if((!this.txtRuc.getText().equals("")) && !blh.caracteresSoloDigitos(this.txtRuc.getText())){
            visualHelper.mostrarMensajeAdvertencia("El campo RUC consta de únicamente caracteres numéricos");
            return null;
        }

        //LONGITUD

        if(this.txtRuc.getText().length()!=11){
            visualHelper.mostrarMensajeAdvertencia("El campo RUC consta de únicamente 11 caracteres numéricos");
            return null;
        }

        if(this.txtTelefono.getText().length()<6){
            visualHelper.mostrarMensajeAdvertencia("El campo Telefono cuenta con al menos 6 dígitos");
            return null;
        }

        if(this.txtTelefono.getText().length()>20){
            visualHelper.mostrarMensajeAdvertencia("El campo Telefono cuenta con máximo 20 dígitos");
            return null;
        }

        if(this.txtNombre.getText().length()>50){
            visualHelper.mostrarMensajeAdvertencia("El campo Razon Social cuenta con máximo 50 caracteres");
            return null;
        }

        if(this.txtContacto.getText().length()>50){
            visualHelper.mostrarMensajeAdvertencia("El campo Contacto cuenta con máximo 50 caracteres");
            return null;
        }

        if(this.txtEmail.getText().length()>30){
            visualHelper.mostrarMensajeAdvertencia("El campo Email cuenta con máximo 30 caracteres");
            return null;
        }

        if(this.txtDireccion.getText().length()>50){
            visualHelper.mostrarMensajeAdvertencia("El campo Direccion cuenta con máximo 50 caracteres");
            return null;
        }

        int id;
        try{
        id=Integer.parseInt(this.txtCodigo.getText());
        }
        catch(Exception e){return null;}

        String nombre=this.txtNombre.getText();
        String direccion=this.txtDireccion.getText();
        String ruc=this.txtRuc.getText();
        String telefono=this.txtTelefono.getText();
        String contacto=this.txtContacto.getText();
        String email=this.txtEmail.getText();
        int estado=(new blProveedor()).dameIdEstadoProveedor(beProveedor.nombreActivo);

        beProveedor pv=new beProveedor(id,nombre,ruc,direccion,telefono,contacto,email,estado);

        return pv;


    }

    private int modificarProveedor(beProveedor pv) throws Exception{
        int result =visualHelper.mostrarPreguntaSiNo("¿Está seguro de modificar el proveedor?");
        if(result==JOptionPane.NO_OPTION){
            return -1;
        }

        (new blProveedor()).modificarProveedor(pv);
        int rLog=(new blLog().registrarLog(usuario.getIdUsuario(), usuario.getCargo(), "Se ha modificado el proveedor con codigo "+pv.getId_Proveedor()));

        return 0;
    }

    private void restaurarElementos() {
        this.txtCodigo.setText(String.valueOf(this.proveedor.getId_Proveedor()));
        this.txtNombre.setText(this.proveedor.getRazon_Social());
        this.txtRuc.setText(this.proveedor.getRuc());
        this.txtDireccion.setText(this.proveedor.getDireccion());
        this.txtTelefono.setText(this.proveedor.getTelefono());
        this.txtContacto.setText(this.proveedor.getNombre_Contacto());
        this.txtEmail.setText(this.proveedor.getEmail());


    }

}
